package cn.tedu.aiumall.product.webapi.service.impl;

import cn.tedu.aiumall.common.pojo.product.dto.SkuAddNewDTO;
import cn.tedu.aiumall.common.pojo.product.entity.Sku;
import cn.tedu.aiumall.common.pojo.product.entity.SkuSpecification;
import cn.tedu.aiumall.common.pojo.product.vo.AttributeListItemVO;
import cn.tedu.aiumall.product.service.ISkuService;
import cn.tedu.aiumall.product.webapi.mapper.SkuMapper;
import cn.tedu.aiumall.product.webapi.mapper.SkuSpecificationsMapper;
import cn.tedu.aiumall.product.webapi.util.IdUtils;
import cn.tedu.aiumall.product.webapi.util.ListConvertUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
@Slf4j
public class SkuServiceImpl implements ISkuService {

    @Autowired
    private SkuMapper skuMapper;
    @Autowired
    private SkuSpecificationsMapper skuSpecificationsMapper;


    @Override
    public void addNew(SkuAddNewDTO skuAddNewDTO) {
        log.debug("skuAddNewDTO = {}", skuAddNewDTO);
        Long skuId = IdUtils.getId();

        Sku sku = new Sku();
        BeanUtils.copyProperties(skuAddNewDTO, sku);
        sku.setId(skuId);
        sku.setSort(skuAddNewDTO.getSort() == null ? 0 : skuAddNewDTO.getSort());
        skuMapper.insert(sku);

        String specifications = skuAddNewDTO.getSpecifications();
        log.debug("specifications = {}", specifications);
        List<AttributeListItemVO> listItemVOList =
                ListConvertUtils.stringToList(specifications, AttributeListItemVO.class);
        log.info("listItemVOList:{}",listItemVOList);
        List<SkuSpecification> skuSpecificationList=new ArrayList<>();
        if (listItemVOList!=null){
            for (AttributeListItemVO attributeListItemVO:listItemVOList){
                SkuSpecification skuSpecification=new SkuSpecification();
                skuSpecification.setSkuId(skuId);
                skuSpecification.setAttributeId(skuAddNewDTO.getAttributeTemplateId());
                skuSpecification.setAttributeName(attributeListItemVO.getName());
                skuSpecification.setAttributeValue(attributeListItemVO.getValueList());
                skuSpecification.setUnit(attributeListItemVO.getUnit());
            skuSpecificationList.add(skuSpecification);
            }
        }
        skuSpecificationsMapper.insertBatch(skuSpecificationList);
    }
}
